package br.org.acessobrasil.portal.plugin;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;

import org.apache.log4j.Logger;

import br.org.acessobrasil.portal.template.Template;
/**
 * Chamado com a tag &lt;!-- ini plugin(Comunicacao) --&gt;
 * @author Fabio Issamu Oshiro
 *
 */
public class Comunicacao extends SuperPlugin {
	private static Logger logger = Logger.getLogger(Comunicacao.class);
	Template temp = new Template();
	//ser� enviado para o default do applicationContext.xml da config do G_Email
	private String para = "default";
	private String de = "";
	public void setDe(String de) {
		this.de = de;
	}
	public void setPara(String para) {
		this.para = para;
	}
	private String solicitarPesquisa(){
		
		String lStrErro="";
		boolean lBlnTelefone=false,lBlnEndereco=false;
		if (requestString("txtNome").equals("") || requestString("txtNome").equals("Digite seu nome")){
			lStrErro = lStrErro + "Preencha o campo Nome" + ".<br>";
		}
		
		if (requestString("txtInstituicao").equals("") || requestString("txtInstituicao").equals("Digite sua institui��o")){
			lStrErro = lStrErro + "Preencha o campo Institui&ccedil;&atilde;o" + ".<br>";
		}
		
		if (requestString("txtOcupacao").equals("") || requestString("txtOcupacao").equals("Digite sua ocupa��o")){
			lStrErro = lStrErro + "Preencha o campo Ocupa&ccedil;&atilde;o" + ".<br>";
		}
		
		if ((!requestString("txtTelefone").trim().equals("") &&	!requestString("txtTelefone").trim().equals("Tel"))
			 || (!requestString("txtFAX").trim().equals("") && !requestString("txtFAX").trim().equals("Fax"))){
			lBlnTelefone = true;
		}
		
		if ((!requestString("txtLogradouro").trim().equals("") && !requestString("txtLogradouro").trim().equals("Digite seu Logradouro")) && !requestString("txtBairro").trim().equals("") && !requestString("txtBairro").trim().equals("Digite seu bairro") && !requestString("txtCEP").trim().equals("") && !requestString("txtCEP").trim().equals("CEP") && !requestString("txtCidade").trim().equals("") && !requestString("txtCidade").trim().equals("Digite sua cidade")){
			lBlnEndereco = true;
		}
		
		if (!(lBlnEndereco) && !(lBlnTelefone) && (requestString("txtEmail").equals("") || requestString("txtEmail").equals("Digite seu email"))){
			lStrErro = lStrErro + "Favor preencher no m&iacute;nimo os dados de Endere&ccedil;o, Telefone ou E-mail" + ".<br>";
		}
			
		if (requestString("txtFinalidade").equals("") || requestString("txtFinalidade").equals("Finalidade")){
			lStrErro = lStrErro + "Preencha o campo Finalidade" + ".<br>";
		}
		
		if (requestString("txtAssunto").equals("") || requestString("txtAssunto").equals("Digite o assunto aqui.")){
			lStrErro = lStrErro + "Preencha o campo Assunto" + ".<br>";
		}
		if(!lStrErro.equals("")){
			//erro
			
			try{
				temp.setArea("mensagem",lStrErro);
			}catch(Exception e){
				//area nao encontrada
			}
			
			temp.substituirAtributoTagId("input", "txtNome", "value",requestString("txtNome"));
			temp.substituirAtributoTagId("input", "txtInstituicao", "value",requestString("txtInstituicao"));
			temp.substituirAtributoTagId("input", "txtOcupacao", "value",requestString("txtOcupacao"));
			temp.substituirAtributoTagId("input", "txtLogradouro", "value",requestString("txtLogradouro"));
			temp.substituirAtributoTagId("input", "txtNumero", "value",requestString("txtNumero"));
			temp.substituirAtributoTagId("input", "txtComplemento", "value",requestString("txtComplemento"));
			temp.substituirAtributoTagId("input", "txtBairro", "value",requestString("txtBairro"));
			temp.substituirAtributoTagId("input", "txtCEP", "value",requestString("txtCEP"));
			temp.substituirAtributoTagId("input", "txtCidade", "value",requestString("txtCidade"));
			temp.substituirAtributoTagId("input", "cboEstado", "value",requestString("cboEstado"));
			temp.substituirAtributoTagId("input", "txtTelefone", "value",requestString("txtTelefone"));
			temp.substituirAtributoTagId("input", "txtCelular", "value",requestString("txtCelular"));
			temp.substituirAtributoTagId("input", "txtFax", "value",requestString("txtFax"));
			temp.substituirAtributoTagId("input", "txtEmail", "value",requestString("txtEmail"));
			temp.substituirAtributoTagId("input", "txtAssunto", "value",requestString("txtAssunto"));
			temp.substituirAtributoTagId("input", "txtFinalidade", "value",requestString("txtFinalidade"));
			return temp.getResultado();
		}else{
			String txtMensagem = "Nome: " + requestString("txtNome") + "\n" +
			"Institui&ccedil;&atilde;o: " + requestString("txtInstituicao") + "\n" +
			"Ocupa&ccedil;&atilde;o: " + requestString("txtOcupacao") + "\n" +
			"Logradouro: " + requestString("txtLogradouro") + "\n" +
			"N&uacute;mero: " + requestString("txtNumero") + "\n" +
			"Complemento: " + requestString("txtComplemento") + "\n" +
			"Bairro: " + requestString("txtBairro") + "\n" +
			"CEP: " + requestString("txtCEP") + "\n" +
			"Cidade: " + requestString("txtCidade") + "\n" +
			"Estado: " + requestString("cboEstado") + "\n" +
			"Telefone: " + requestString("txtTelefone") + "\n" +
			"Celular: " + requestString("txtCelular") + "\n" +
			"FAX: " + requestString("txtFax") + "\n" +
			"E-mail: " + requestString("txtEmail") + "\n" +
			"Assunto: " + requestString("txtAssunto") + "\n" +
			"Finalidade: " + requestString("txtFinalidade");
			try{
				br.org.acessobrasil.portal.util.G_Email.enviarEmail("Atendimento", txtMensagem, "dinf@bn.br", "dinf@bn.br", "dinf@bn.br", "dinf@bn.br");
			}catch(Exception e){
				return "<div class=\"aviso\">" + e.getMessage() + "</div>";
			}
			return "<div class=\"aviso\">SUA SOLICITACAO FOI EFETUADA COM SUCESSO. <br />OBRIGADO.</div>";
		}
	}
	@Override
	public String executa() {
		temp.setTemplate(template);
		//verifica se enviou algo
		if(requestString("metodo").equals("")){
			try{
				temp.setArea("mensagem", "");
			}catch(Exception e){
				
			}
			return temp.getResultado();
		}else{
			if(requestString("metodo").equals("solicitarPesquisa")){
				return solicitarPesquisa();
			}else{
				//padr�o
				return faleConosco();
			}
		}
	}
	/**
	 * Envia um e-mail para o default do applicationContext.xml que configura o G_Email<br>
	 * Coloca na mensagem tudo o que for colocado com o prefixo txt<br>
	 * padrao = txt##NomeDoCampo
	 * @return mensagem de sucesso em html
	 */
	@SuppressWarnings("unchecked")
	public String faleConosco(){
		String mensagemOk = "<div class=\"aviso\">"+requestString("msgOk")+"</div>" +
		"<a href=\""+gerenciador.getHistorico().getUrlAnterior()+"\">Voltar</a>";
		logger.debug("mensagem de ok configurada = '" + requestString("msgOk")+"'");
		
		
		/*
		 * Coloca tudo que for postado com prefixo txt
		 */
		Enumeration<String> pName = request.getParameterNames();
		ArrayList<String> arrParametros = new ArrayList<String>();
		while(pName.hasMoreElements()){
			String key = pName.nextElement();
			if(key.startsWith("txt")){
				arrParametros.add(key);
			}
			//verifica se � txt##Email
			if(key.startsWith("txt") && key.endsWith("Email")){
				de = requestString(key);
			}
		}
		 
		if(!para.trim().equals("") && !de.trim().equals("")){
			String assunto = "CMS ASES - " + requestString("txtAssunto");
			String txtMensagem =""; 			
			
			Collections.sort(arrParametros);
			for(String key:arrParametros){
				if(!key.equals("txtAssunto"))
					txtMensagem+=key.substring(3+2)+": "+request.getParameter(key)+"\n\n";
			}
			try{
				br.org.acessobrasil.portal.util.G_Email.enviarEmail(assunto, txtMensagem, para, para, de, requestString("txtNome"));
			}catch(Exception e){
				logger.error("Erro ao enviar e-mail",e);
				return "<div class=\"aviso\">" + e.getMessage() + "</div>";
			}
			return mensagemOk;
		}
		return template;
	}
}

